using System.Collections.Generic;

namespace TBit.Lib {
    public interface LibFunc {
        string name {get;}
        int arg_number {get;}
        Data Call(List<Data> args);
    }

    public class Print : LibFunc {
        public string name {get {return "print";}}
        public int arg_number {get {return 1;}}

        public Data Call(List<Data> args) {
            System.Console.Write(args[0]);
            return new Data();
        }
    }

    public class ReadInput : LibFunc {
        public string name {get {return "read_input";}}
        public int arg_number {get {return 0;}}

        public Data Call(List<Data> args) {
            return new Data(System.Console.ReadLine());
        }
    }
}